package com.example.springbootmybatis.controller;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.example.springbootmybatis.entity.DeptTab;
import com.example.springbootmybatis.service.IDeptService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.List;

/**
 * @author cuikaixuan
 * @date 2021/4/22  9:34
 * @desc 部门信息
 */
@Controller
@RequestMapping("dept")
public class DeptController {

    @Autowired
    private IDeptService deptService;

    @RequestMapping("getAllDept") //访问方法路径
    @ResponseBody  //返回结果以json格式输出
    public JSONObject getAllDept(String deptName){
        List<DeptTab> list = deptService.getAllDept(deptName);
        JSONObject json = new JSONObject();
        json.put("list", list);
        return json;
    }

    @RequestMapping("insertDept")
    @ResponseBody
    public JSONObject insertDept(DeptTab deptTab){
        int id = deptService.insertDept(deptTab);
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("result", true);
        jsonObject.put("data", id);
        return jsonObject;
    }

    /**
     * 通过测试得出多个对象时采用String数组形式接收，前台将对象转化为json形式即可
     * @param deptTabs
     * @return
     */
    @RequestMapping("batchInsertDept")
    @ResponseBody
    public JSONObject batchInsertDept(@RequestParam(value = "deptTabs" , required = false) String deptTabs){
        JSONObject jsonObject = new JSONObject();
        if(deptTabs != null && deptTabs.length() != 0){
            List<DeptTab> deptTabs1 = JSONArray.parseArray(deptTabs, DeptTab.class);
            int count = deptService.batchInsertDept(deptTabs1);
            jsonObject.put("result", true);
            jsonObject.put("data", count);
            return jsonObject;
        }
        jsonObject.put("result", false);
        jsonObject.put("data", 0);
        return jsonObject;
    }

    /**
     *  说明：
     *      @RequestParam 使用须知-----普通数据类型可以不用指定，集合类型需要有此注解指定
     *          使用@RequestParam注解将请求参数绑定至方法参数
     *          三个属性：
     *              value：请求参数名（必须配置）
     *              required：是否必需，默认为 true，即 请求中必须包含该参数，如果没有包含，将会抛出异常（可选配置）
     *              defaultValue：默认值，如果设置了该值，required 将自动设为 false，无论你是否配置了required，配置了什么值，都是 false（可选配置）
     *
     * 批量删除、启用部门信息(测试传入数组)
     * @param remove   true：删除 false：启用
     * @param ids   需要处理的部门id
     * @return
     */
    @RequestMapping("batchRemove")
    @ResponseBody
    public JSONObject batchRemove(Boolean remove, @RequestParam("ids") List<Integer> ids){
        JSONObject jsonObject = new JSONObject();
        //判断是否正常传入参数
        if(ids != null && ids.size() != 0){
            int count = deptService.batchRemove(remove, ids);
            //返回操作结果 ： true：成功  false：
            jsonObject.put("result", true);
            //返回操作的数据条数
            jsonObject.put("data", count);
        }else{
            jsonObject.put("result", false);
            jsonObject.put("data", 0);
        }
        return jsonObject;
    }

    @RequestMapping("batchRemoveOnJson")
    @ResponseBody
    public JSONObject batchRemoveOnJson(Boolean remove, String ids){
        JSONObject jsonObject = new JSONObject();
        if(ids != null && ids.length() != 0){
            List<Integer> ids1 = JSONArray.parseArray(ids,Integer.class);
            int count = deptService.batchRemove(remove, ids1);
            //返回操作结果 ： true：成功  false：
            jsonObject.put("result", true);
            //返回操作的数据条数
            jsonObject.put("data", count);
        }else{
            jsonObject.put("result", false);
            jsonObject.put("data", 0);
        }
        return jsonObject;
    }
}